/*
 * Copyright (C) 2010 恒康信息科技有限公司
 * 版权所有
 */
package com.jjmmbb.db.db;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

/**
 * 数据库基本操作类,数据库的创建,更新的操作都在这里进行
 * 
 * @author yizhe
 * @date 2012-5-18
 */
public class DBHelper extends SQLiteOpenHelper {

	static String name = "daiban.db"; // 数据库名称
	static CursorFactory cursorFactory = null;
	static int version = 3700; // 37版本

	SQLiteDatabase db = null;

	public DBHelper(Context context, String name, CursorFactory cursorFactory,
			int version) {
		super(context, name, cursorFactory, version);
		db = getWritableDatabase();
	}

	public DBHelper(Context context) {
		super(context, name, cursorFactory, version);
		db = getWritableDatabase();
	}

	/**
	 * 重构数据库,软件第一次安装的时候创建,或者数据库名发生了变化
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		// 所有表的创建过程都在这里进行
		SqlForDBCreate.CreateDatabase(db);
	}

	/**
	 * 数据库更新,当版本号version发生变化的时候,可以从
	 * db.getVersion()得到上一次的版本号,通过判断db.getVersion()实现数据库更新
	 */
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		onCreate(db); // 每次更新数据库,都重构数据库
		if (db.getVersion() < 1000) {
			onCreate(db);// 重构数据库3.6版本以下的需要重构数据库
		}
	}

	@Override
	public void onOpen(SQLiteDatabase db) {
		Log.d("db", "databaseOpen");
		super.onOpen(db);
		// 每次成功打开数据库后首先被执行
	}

	/**
	 * 执行sql,这个方法能实现查询外的所有的数据库操作
	 * 
	 * @param sql
	 */
	public void execSQL(String sql) {
		db.execSQL(sql);
		close();
	}

	/**
	 * 按sql查询数据
	 * 
	 * @param sql
	 * @return
	 */
	public Cursor Query(String sql) {
		Cursor cursor = db.rawQuery(sql, new String[] {});
		return cursor;
	}

	public void finalize() {
		close();
	}
}
